package algo3.algocity.controlador;

import java.awt.event.ActionListener;
import java.awt.event.MouseListener;





import javax.swing.JFrame;

import algo3.algocity.mensajeros.*;
import algo3.algocity.modelo.interfaces.MegaConstruccion;
import algo3.algocity.modelo.interfaces.MiniConstruccion;
import algo3.algocity.modelo.menu.Jugador;
import algo3.algocity.modelo.menu.Partida;
import algo3.algocity.vista.EstadoVistaMapaSuperficie;
import algo3.algocity.vista.Vista;

public class Controlador {
	
	Vista vista;
	//Partida partida;
	Jugador jugador;
	MegaConstruccion megaConstruccionPorConstruir = null;
	MiniConstruccion miniConstruccionPorConstruir = null;
	
	public Controlador(Jugador jugador,Vista vista) {

		this.jugador = jugador;
		this.vista = vista;
		
		
		
	}
	
	public void definirVista(Vista vista){
	
		this.vista = vista;
	}
	
	public Jugador obtenerJugador(){
		
		return this.jugador;
	}
	
	public Vista obtenerVista(){
		
		return this.vista;
	}
	
	public void definirSiguienteMegaConstruccionAConstruir(MegaConstruccion construccion){
		
		this.megaConstruccionPorConstruir = construccion;
		
	}
	
	public void definirSiguienteMiniConstruccionAConstruir(MiniConstruccion construccion){
		
		this.miniConstruccionPorConstruir = construccion;
		
	}
	
	public MegaConstruccion obtenerSiguienteMegaConstruccionAConstruir(){
	
		return this.megaConstruccionPorConstruir;
	}
	
	public MiniConstruccion obtenerSiguienteMiniConstruccionAConstruir(){
		
		return this.miniConstruccionPorConstruir;
	}
	
	public ActionListener obtenerConstruirResidencialListener() {
		
		return new ConstruirResidencialListener(this);
	}
	
	public ActionListener obtenerConstruirComercialListener() {
		
		return new ConstruirComercialListener(this);
	}
	
	public ActionListener obtenerConstruirIndustrialListener() {
		
		return new ConstruirIndustrialListener(this);
	}
	
	public ActionListener obtenerConstruirRutaListener() {
		
		return new ConstruirRutaListener(this);
	}
	
	public ActionListener obtenerConstruirCentralMineralListener() {
		
		return new ConstruirCentralMineralListener(this);
	}
	
	public ActionListener obtenerConstruirLineaDeTensionListener() {
		
		return new ConstruirLineaDeTensionListener(this);
	}
	
	public ActionListener obtenerConstruirCentralEolicaListener() {
		
		return new ConstruirCentralEolicaListener(this);
	}
	
	public ActionListener obtenerConstruirCentralNuclearListener() {
		
		return new ConstruirCentralNuclearListener(this);
	}
	
	public ActionListener obtenerConstruirPozoDeAguaListener() {
		
		return new ConstruirPozoDeAguaListener(this);
	}
	
	public ActionListener obtenerConstruirTuberiaListener() {
		
		System.out.println("aaa");
		
		return new ConstruirTuberiaDeAguaListener(this);
	}
	
	public ActionListener obtenerConstruirBomberosListener() {
		
		return new ConstruirBomberosListener(this);
	}
	
	public ActionListener obtenerAvanzarTurnoListener() {
		
		return new AvanzarTurnoListener(this);
	}
	
	public ActionListener obtenerVistaSuperficieListener(){
		
		return new VistaSuperficieListener(this);
	}
	
	public ActionListener obtenerVistaSubterraneaListener(){
		
		return new VistaSubterraneaListener(this);
	}
	
	public MouseListener obtenerClickSobreElMapaListener() {
		
		return new ClickSobreElMapaListener(this,jugador.obtenerPartida().obtenerMapa());
	}

	public void definirJugador(Jugador jugador){
		
		this.jugador = jugador;
	}
	
	
	public void notificarUsuario(String mensaje){
		
		vista.notificaUsuario(mensaje);
	}

	public ActionListener obtenerIniciarPartidaListener() {
		
		return new VistaCrearJuegadorListener(this);
	}

	public ActionListener obtenerContinuarPartidaListener() {
		
		return new VistaContinuarJugador(this);
	}

	public ActionListener obtenerBotonComenzar() {
		// TODO Auto-generated method stub
		return new VistaMapaConBotones(this);
	}


}
